#!/usr/bin/env python

# -*- coding: utf-8 -*

"""
驱动基类，不要实例化此类
"""

import logging

class Driver:
    """
    驱动的最底层接口
    """ 

    def __init__(self):
        """
        驱动的初始化
        """
        logging.debug(f"初始化驱动：{self}")
        self.isOpen = False

    def open(self):
        """
        打开外设
        """
        logging.debug(f"打开驱动：{self}")
        self.isOpen = True

    def openDriverIfClosed(self):
        if not self.isOpen:
            self.openDriver()

    def openDriver(self):
        """
        实际调用的打开外设方法，不必覆写此方法
        """
        if self.isOpen:
            logging.warning(f"不能重复打开驱动：{self}")
            return
        self.open()

    def close(self):
        """
        关闭外设
        """
        logging.debug(f"关闭外设：{self}")
        self.isOpen = False
    
    def closeDriver(self):
        """
        实际调用的关闭外设方法，不必覆写此方法
        """
        if not self.isOpen:
            logging.warning(f"不能重复关闭驱动：{self}")
            return
        self.closeDriver()

    def closeDriverIfOpened(self):
        if self.isOpen:
            self.closeDriver()
    
    def reset(self):
        """
        重置外设为初始状态
        """
        logging.debug(f"重置外设：{self}")

    def resetDriver(self):
        """
        实际调用的重置外设方法，不必覆写此方法
        """
        self.reset()



